Video on demand (VOD) systems typically provide video content, such as movies, television programming, and music videos, to users from a content library via a dedicated system of computers known as a content distribution network (CDN). In many VOD systems, users may order movies or other video content from their homes via client devices including set-top boxes, and the video content is delivered by streaming the data over a communication network from a video content library stored in one of the computers in the CDN. To avoid excess network loads, especially during peak content ordering times, VOD systems may use CDNs that have a network of local caches spread out geographically across the CDN so that users may receive their requested video content from a nearby source. These local caches, also known as ‘edge caches,’ typically store only a small subset of the total video content available in the VOD system. Therefore, it is desirable for the local caches to store the most popular video content, the content most likely to be requested by the users of the local caches in the near future. Similarly, it is desirable not to cache obscure and rarely requested video content in the VOD system, since cache space is limited and the network cost of streaming rarely requested titles is relatively minor compared to streaming more popular titles.
In a VOD system, establishing and operating the local caches in the CDN is an expensive proposition. The costs associated with local caches include the devices themselves, the maintenance of the devices, memory upgrades, and the network bandwidth costs associated with the local caches throughout the CDN. The costs of purchasing, installing, and operating local caches in a CDN increase further if the caches are not properly sized. For example, if a video content provider implements a larger cache than is necessary or more bandwidth than is necessary for a local cache, the video content provider has misused money on unused resources. On the other hand, if a local cache is not adequately sized, the CDN might not be able to respond to user requests at peak times, causing user dissatisfaction and revenue loses for the video content provider.
In many conventional systems, the sizes of the local caches in a VOD CDN are scaled linearly as the amount of content in the VOD system increases. However, research regarding the viewing habits of VOD users shows that a linear increase in the content available in a VOD system does not result in a linear increase in network bandwidth usage or optimal cache size. Thus, many VOD systems may waste substantial time and money unnecessarily replicating video content in many different local caches, even though much of that video content will be minimally viewed and should not have been cached.
An additional challenge in VOD systems relates to intelligently caching video content assets in the local caches, in order to respond to user requests more efficiently in systems having large amounts of VOD content. Many conventional systems implement a “most recently requested” algorithm at the local cache, in which the least recently requested video content assets will be discarded from the cache to make room for newly requested assets. However, the “most recently requested” approach is not optimal in many scenarios. One problem with this approach is that it assumes that the cost of delivering a VOD asset to a local cache (e.g., from a central content library or middle-tier server in the CDN) is the same for every asset in the VOD system. This assumption is false in modern VOD systems, because the video content assets may vary significantly in play length (e.g., movies, television episodes, music videos, games) and bit rate (e.g., standard definition and high definition). These factors result in highly variable asset sizes, and similarly to highly variable network costs for retrieving the different sized assets.